package threading;

/**
 * @author 徐志荣
 * @date 2023/3/12 10:59
 */


class MyThread extends Thread{
    @Override
    public void run() {//不是一个随便的方法,重写了父类的方法 ,是线程的入口方法
        while (true) {
            System.out.println("hello t");
            //sleep是Thread的静态方法 , 参数单位是ms  1s = 1000ms
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                //InterruptedException 打断/中断
                //意思是 sleep 睡眠过程中,还没到点的提前唤醒了
                e.printStackTrace();
            }
        }
    }
}
public class ThreadDemo1 {

    public static void main2(String[] args) {
        Thread thread = new MyThread();
        //run 不会创建新的线程,run 是在 main 线程中执行的
        // 两个死循环都在同一个线程中,执行到第一个死循环,代码就出不来了,第二个循环进不去了
        thread.run();
       while (true) {
            System.out.println("hello main");

       }

    }
    public static void main(String[] args) {
        //1. 先创建MyThread实例, thread的引用实际上是指向子类的实例
        Thread thread = new MyThread();
        //2. 启动线程,在进程中搞了另外一个流水线,新的流水线开始并发的执行
        thread.start();

        /* thread.start();做的事:
        调用操作系统的 api 创建新的线程
        新的线程里调用   thread.start();
        * */

        //上述代码涉及两个线程 1. main方法所对应的线程(一个进程里至少得有一个线程)也可以称为主线程
        //                  2. 通过 thread.start(); 创建的新的线程
        while (true) {
            System.out.println("hello main");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }
}
